home *** CD-ROM | disk | FTP | other *** search
/ Collection of Internet / Collection of Internet.iso / infosrvr / dev / www_talk.930 / 001369_daemon _Sat Jun 19 02:52:19 1993.msg < prev    next >
Internet Message Format  |  1994-01-24  |  16KB

  1. Received: by  nxoc01.cern.ch  (NeXT-1.0 (From Sendmail 5.52)/NeXT-2.0)
  2.     id AA12116; Sat, 19 Jun 93 02:52:22 MET DST
  3. Return-Path: <marca@wintermute.ncsa.uiuc.edu>
  4. Received: from dxmint.cern.ch by  nxoc01.cern.ch  (NeXT-1.0 (From Sendmail 5.52)/NeXT-2.0)
  5.     id AA12112; Sat, 19 Jun 93 02:52:19 MET DST
  6. Received: from newton.ncsa.uiuc.edu by dxmint.cern.ch (5.65/DEC-Ultrix/4.3)
  7.     id AA18384; Sat, 19 Jun 1993 03:14:34 +0200
  8. Received: from wintermute.ncsa.uiuc.edu by newton.ncsa.uiuc.edu with SMTP id AA22331
  9.   (5.65a/IDA-1.4.2 for www-talk@nxoc01.cern.ch); Fri, 18 Jun 93 20:14:33 -0500
  10. Received: by wintermute.ncsa.uiuc.edu (920110.SGI/911001.SGI)
  11.     for @newton.ncsa.uiuc.edu:www-talk@nxoc01.cern.ch id AA27298; Fri, 18 Jun 93 20:17:17 -0500
  12. Date: Fri, 18 Jun 93 20:17:17 -0500
  13. From: marca@ncsa.uiuc.edu (Marc Andreessen)
  14. Message-Id: <9306190117.AA27298@wintermute.ncsa.uiuc.edu>
  15. To: www-talk@nxoc01.cern.ch
  16. Subject: from Dr. SGML^H^H^H^H Macro...
  17. X-Md4-Signature: 9a5372fedb2932130dae5a091f8cb244
  18.  
  19. From: drmacro@vnet.IBM.COM
  20. Date: Fri, 18 Jun 93 08:40:05 EDT
  21. Newsgroups: comp.text.sgml
  22. Subject: HyTime Finite Coordinate Space Locations
  23. Disclaimer: This posting represents the poster's views, not those of IBM
  24. News-Software: Usenet 3.1
  25.  
  26. A typical problem with online presentation systems is the problem
  27. of defining hyperlink anchors and other things within bitmap
  28. images or other multimedia data notations that have no facility
  29. for defining locations within themselves or that are not revisable.
  30. Most systems I've seen provide some sort of addressing mechanism
  31. that applies a location onto the object.  For example, the IPF
  32. online help system under OS/2 lets you create what it calls an
  33. "art link" by specifying a graphic and then coding in the x and
  34. y locations of a hot spot to create a link anchor.  It works, but
  35. it's particularly transportable or flexible.  HyTime provides a
  36. more general solution to this problem through its finite coordinate
  37. space (FCS) location element (fcsloc).
  38.  
  39. Fcsloc lets you impose or overlay a coordinate space onto a data
  40. object such that the boundaries of the data object are aligned with
  41. the coordinate space.  To make this works takes a little set up on
  42. the application side, but once the coordinate space is defined, using
  43. an FCSLOC is no more difficult than using any other location mechanism.
  44.  
  45. The finite coordinate space element (FCS) defines a set of coordinate
  46. axes.  Each axis has a measurement domain associated with it, e.g.,
  47. what system of measurement is used for each axis (inches, seconds,
  48. pixels, etc.).  A "semantic" FCS is defined in the DTD by declaring
  49. an element that conforms to the FCS architectural form.  For example,
  50. to address into graphics, we might define a two-dimensional FCS.
  51.  
  52. Within the document instance, particular portions of the FCS are defined
  53. by specifying instances of the FCS element defined in the DTD.
  54.  
  55. Thus, to solve the problem of addressing into images, we first declare
  56. an instance of the FCS form in the DTD itself:
  57.  
  58. <!ELEMENT GraphicGrid - O (evsched : wand : baton)+ >
  59. <!ATTLIST GraphicGrid
  60.           ID       ID    #IMPLIED
  61.           HyTime   NAME  #FIXED fcs
  62.           axisdefs NAMES #FIXED "xaxis yaxis"
  63. >
  64. <!ELEMENT (xaxis : yaxis) - O (#PCDATA) >
  65. <!ATTLIST (xaxis : xaxis)
  66.           HyTime   NAME  #FIXED axis
  67.           axisdim  CDATA #FIXED "1000"     -- Length of axis  --
  68.           axismeas CDATA #FIXED "gquantum" -- generic quantum --
  69. >
  70.  
  71. These declarations define the semantic coordinate space GraphicGrid,
  72. which for this example just uses the generic quantum as its measurement
  73. unit, which is fine for overlaying onto graphics of varying resolutions.
  74. To actually use the fcsloc element, however, we have to actually put an
  75. instance of GraphicGrid in our document.  It would look like this:
  76.  
  77.   <GraphicGrid id=maingrid>
  78.   <evsched><event></event></evsched><GraphicGrid>
  79.  
  80. For this simple example, the finite coordinate space contains a single
  81. empty event element.  This is because for this example, we aren't
  82. creating an event schedule, but simply defining an FCS to overlay onto a
  83. graphic image, however, the element GraphicGrid has required content,
  84. so I had to put something.
  85.  
  86. The location source for the fcsloc is a
  87. graphic entity, which is addressed via a nameloc element that associates
  88. an ID with the entity name.  The fcsloc element also refers to the FCS
  89. element and contains the actual address within the FCS being located:
  90.  
  91. <nameloc id=graphic=object><nmlist entity>a-graphic-entity</nameloc>
  92. <fcsloc locsrc=graphic-object
  93.         impfcs=maingrid>
  94.   <extlist>100 150 200 100
  95. </fcsloc>
  96.  
  97. The Locsrc= attribute names the object against which the fcsloc is
  98. applied (the location source).  The Impfcs= attribute refers to the FCS
  99. element that defines the grid to overlay onto the object, in this case,
  100. the GraphicGrid element with an id of "maingrid".  The extlist element
  101. contains an "extent list", which is nothing more than a set of
  102. dimension specifications, one for each axis, applied in the order the
  103. axis elements are declared in the Axisdefs= attribute of the FCS
  104. element.
  105.  
  106. Note that for a special-purpose application like IBMIDDoc, the FCS
  107. element would not have to be actually coded in each document, but could
  108. be defined in the application specification and treated as though it
  109. really did exist, so that in practice, all the author has to specify is
  110. the FCSLOC element.  For interchange with other HyTime applications, the
  111. real FCS element could be generated dynamically or included via entity
  112. reference to an entity shipped as part of the IBMIDDoc package.
  113.  
  114. Notice that the measurement domain of the FCS is ignored for the
  115. purpose of doing the location.  If I understand it correctly,
  116. the imposed FCS is aligned with the boundaries of the location
  117. source (the graphic in this example).  The dimension spec in the
  118. FCSLOC then effectively defines a proportional part of the FCS,
  119. rather than some absolute measurement.  In other words, if the
  120. FCS's measurement domain was centimeters, and you specified
  121. a dimension of '1 450' thinking you were asking for 450 centimeters,
  122. you would really be addressing some proportion of the FCS,
  123. dependent on the length of each axis (defined with the axisdim=
  124. attribute of the Axis elements).
  125.  
  126. This behavior makes sense because computer-presented objects
  127. tend not to have meaningful absolute extents.  For example, if
  128. you use a word processor that shows a scale across a document and
  129. labels it as "inches", chances are the ruler on the screen won't match
  130. the ruler in your desk.  Also, it's unlikely that the presentation
  131. system will know how big, in absolute measurements, a given object
  132. thinks it is, as that information will always be notation-specific.
  133.  
  134. Note also that FCSLOC is really an expedient for systems that
  135. don't support either event schedules or have data notations that
  136. provide ways, in that notation, to define anchor points within
  137. them.  Event schedules do provide the richness of expression to
  138. allow the definition of position within an FCS using absolute
  139. measurements.  For example, instead of imposing a hyperlink
  140. anchor onto a graphic using FCSLOC, I could create an event
  141. schedule that places both the graphic and the hyperlink anchor
  142. on the FCS and thus relates them to each other within the
  143. same coordinate space.
  144.  
  145. <GraphicGrid><!-- FCS element, contains event schedule -->
  146.  <evsched><!-- Contains events in this coordinate space -->
  147.   <event id=the-graphic
  148.          extent="1 782 1 6687">
  149.   <!-- Contains reference to graphic -->
  150.    <object objectname=my-graphic>
  151.   </event>
  152.   <event id=anchor-in-graphic
  153.          extent="100 150 200 100">
  154.    <refkey linkends="the-graphic text-anchor">Link to something else</>
  155.   </event>
  156.  </evsched>
  157. </GraphicGrid>
  158.  
  159. With this two-event event schedule, I've placed two objects
  160. within a defined coordinate space, in this case, a graphic
  161. and a link, thereby relating them spatially.  The RefKey element
  162. is also an Ilink element, so it specifies the graphic as one
  163. of its anchors explicitly, even though their occurence within
  164. the schedule also relates it to the graphic.  RefKey is an element
  165. from the IBMIDDoc language.  It has the defined semantic of creating
  166. hyperlinks between multimedia objects and text.
  167.  
  168. Note also that the elements in the event schedule are references
  169. to other objects, not necessarily objects themselves.  This is a
  170. very powerful aspect of event schedules, because it lets you
  171. position objects without modifying the objects themselves--anything
  172. you can address can be placed in an event schedule by using standard
  173. HyTime location elements to refer to it.
  174.  
  175. For a real online system to present this event schedule, it first
  176. defines the location of the FCS itself (which might be
  177. defined by another event schedule, see the next discussion), then
  178. interprets each event, placing it on the FCS (in this example, a
  179. two-dimensional grid) according to its defined extent.  It then does
  180. whatever processing is associated with the objects in each event,
  181. e.g., display the graphic and display and manage the hyperlink anchor.
  182. None of these functions are anything most sophisticated online
  183. systems don't already do--we've just expressed the constructs using
  184. a standard notation, HyTime.  Implementing support for this level
  185. of function should be a fairly small delta on top of an existing system
  186. that already provides the presentation functions needed.
  187.  
  188. Note also that an event could itself be a reference to another
  189. event schedule.  For example, consider the problem of defining
  190. a multimedia presentation consisting of a series of "panels"
  191. organized in time.  You would have one event schedule representing
  192. the main time dimension.  The events in this schedule would be
  193. panel events.  Each panel could be described as a two-dimensional
  194. FCS with the panel objects being events within it.  Consider this
  195. example:
  196.  
  197. <TimeLine><!-- FCS element with one axis, measured in abstract units -->
  198.  <evshed>
  199.   <event extent="1 1"><!-- For this example, each even takes one
  200.                            quantum since we're just defining order -->
  201.    <panel contentref=panel-1><!-- Uses content of Panel element
  202.                                   defined elsewhere -->
  203.     </event>
  204.     <event extent="1"><!-- Starts at quantum following previous event -->
  205.      <panel contentref=panel-2>
  206.     </event>
  207.   </evsched>
  208. </TimeLine>
  209.  
  210. You could think of this timeline element as being analogous to
  211. a master document in a DTP system, defining at the highest organizational
  212. level the order of inclusion of the constituent elements of the
  213. presentation, with the added function of defining their extents.
  214.  
  215. Each panel would itself be an event schedule, this time, either
  216. containing or refering to content objects:
  217.  
  218. <PanelSpec><!-- FCS element with two axes, measured in abstract units -->
  219.  <evsched>
  220.   <TextBlock extent="10 100 20 236">
  221.   <!-- TextBlock is an event form element, now with the application-
  222.        specific semantic of containing text elements. -->
  223.    <parablock contentref="some-text-data">
  224.     <!-- Refers to some text data marked up with IBMIDDoc elements
  225.          elsewhere.-->
  226.   </TextBlock>
  227.   <ViewPort extent="50 100 60 400"><!-- Also of form event -->
  228.    <MultiMediaObject object=video1>
  229.     <TextAlternative>
  230.      <p>This video shows the following...
  231.     </TextAlternative>
  232.    </MultiMediaObject>
  233.   </Viewport>
  234.   &standard-buttons;<!-- Get standard button events -->
  235. </PanelSpec>
  236.  
  237. Note that the PanelSpec event schedule is a sort of "style spec" for
  238. the panel, defining not the content, but at least one aspect of its
  239. physical aspect, namely the positions of the elements within the
  240. panel space.  However, in this sort of application, the lines between
  241. style and content start to blur a little.  They could be unblurred in
  242. a concrete application by only allowing reference elements within
  243. events.  Conversely, you could define the panel content language
  244. as a series of event schedules that contain their content directly.
  245. But, the details of the presentation of each panel element, such as
  246. border size, color, etc., would be purely a matter of style.
  247.  
  248. Note in these examples that I've used normal IBMIDDoc elements as
  249. the content of the panel event schedule.  This is to emphasize both
  250. that IBMIDDoc is capable of applying to multimedia applications and
  251. that the purpose of a multi-media-specific language is to do nothing
  252. more than define the order and position of content within time
  253. and space--there is no need to invent completely new content objects.
  254.  
  255. Going through these examples has convinced me that scheduling in
  256. HyTime is (or can be) much simpler than it looks at first glance.
  257. I was rather surprised at how easy it was to type in the event
  258. schedules above.  I was also surprised at how similar my "panel"
  259. event schedule is to the structures defined by the IBM Dialog Tag
  260. Language, which provides elements for logically organizing panels
  261. into regions that contain the real content elements (fields, buttons,
  262. text, etc).  Regions are explicit coordinate spaces.  Interesting.
  263.  
  264. Finally, note the indirection in all of this.  This indirection is
  265. crucial both to the implementation and the flexibility of the system.
  266. It is the indirection of pointing from an event schedule to the
  267. content that makes the system flexible and maintainable.  It will be
  268. the job of multimedia authoring tools to manage this indirection for
  269. writers--that's the really difficult part of authoring in this
  270. environment.  For example, I would expect a multimedia editor to
  271. build these sorts of event schedules under the covers as the author
  272. creates their presentation, including providing an interface for
  273. creating the references from events to actual content elements, as
  274. well as doing the things it already does, such as calculating the
  275. extents of events (e.g., the screen locations of viewports or
  276. windows).
  277.  
  278. More finally, note that given this sort of HyTime language for
  279. defining the structure of multimedia presentations, there's no
  280. need to have a presentation system that interprets the event
  281. schedules in real time (although that would be nice).  You could
  282. (and probably must in the short term) apply the same technique
  283. that the Dialog Tag Language did, namely, compiling the declarative
  284. source into a run-time form that does not need to be interpreted.
  285. It is important to remember that just because your source is structured
  286. with HyTime, it does not mean your presentation system must understand
  287. HyTime, any more than using SGML for text means your ultimate formatter
  288. has to understand SGML.  It only requires the ability to create processors
  289. that create from the source a runtime object that expresses the structures
  290. in the source.  It is really a question of binding time:  when do you
  291. bind the source to its presentation?  In the near term, the binding
  292. will be early, at the time you compile the deliverable into some
  293. proprietary form (e.g., IPF, ToolBook, etc.).  In the future, the
  294. binding will be as late as possible using true HyTime engines that
  295. interpret the source and create the presentation directly at
  296. presentation time.
  297.  
  298. Eliot Kimber                      Internet:  drmacro@vnet.ibm.com
  299. Dept E14/B500                     IBMMAIL:   USIB2DK9@IBMMAIL
  300. Network Programs Information Development     Phone: 1-919-254-5160
  301. IBM Corporation
  302. Research Triangle Park, NC 27709
  303.